#include <iostream>
#include <cstring>
#include <vector>
using namespace std;

class cla{
    static int n;
public:
    cla(){
        n++;
    }
    ~cla(){
        n--;
    }
    static int get_n(){
        return n;
    }
};

int cla::n = 0;

void test1(){
    cla* p = new cla;
    delete p;
    cout << cla::get_n() << endl;
}

void test2(){
    string str1 = "acc";
    string str2 = "abd";
    bool cmp = str1 > str2;
    cout << cmp;
}

//判断n个字符串是按照字典序还是长度排序
void Test1(){
    int n;
    cin >> n;
    vector<string> v(n);
    for (int i = 0; i < n; ++i) {
        cin >> v[i];
    }
    bool dictSort = true, lenSort = true;
    for (int i = 0; i < n-1; ++i) {
        if (v[i] > v[i + 1]){
            dictSort = false;
            break;
        }
    }
    for (int i = 0; i < n-1; ++i) {
        if (v[i].size() > v[i + 1].size()){
            lenSort = false;
            break;
        }
    }
    if (dictSort && !lenSort)
        cout << "lexicographically" << endl;
    else if (!dictSort && lenSort)
        cout << "lengths" << endl;
    else if (dictSort && lenSort)
        cout << "both" << endl;
    else
        cout << "none" << endl;
}

//求两数最小公倍数
int gcd(int a, int b){
    int tmp;
    while (tmp = a % b){
        a = b;
        b = tmp;
    }
    return b;
}

void Test2(){
    int a, b;
    cin >> a >> b;
    cout << a * b / gcd(a,b) << endl;
}

int main() {
    //test2();
    Test2();
    return 0;
}

